package com.hqd.ch03.v51.registry;


import com.hqd.ch03.v51.beans.factory.config.BeanDefinition;
import com.hqd.ch03.v51.core.AliasRegistry;

/**
 * bean定义缓存接口
 */
public interface BeanDefinitionRegistry extends AliasRegistry {
    /**
     * 添加bean定义
     *
     * @param beanName
     * @param beanDefinition
     */
    void registerBeanDefinition(String beanName, BeanDefinition beanDefinition);

    /**
     * 删除bean定义
     *
     * @param beanName
     */
    void removeBeanDefinition(String beanName);

    /**
     * 获取bean定义
     *
     * @param beanName
     * @return
     */
    BeanDefinition getBeanDefinition(String beanName);

    /**
     * 是否包含bean定义
     *
     * @param beanName
     * @return
     */
    boolean containsBeanDefinition(String beanName);

    int getBeanDefinitionCount();

    /**
     * 获取所有bean名称
     *
     * @return
     */
    String[] getBeanDefinitionNames();

    boolean isBeanNameInUse(String beanName);
}
